/**
 * 本质上就是问：给定一个树，选择若干个节点，但是不能存在父子关系
 * 最多能选出多少个，树根必须选
 * 令Ui为选i，i子树能选出的最多
 * Vi为不选i，i子树能选出的最多
 * Di = max(Ui, Vi)
 * 则答案为[Root]
 * 其中, Ui = 1 + SIGMA{V[sons]}
 * Vi = SIGMA{D[sons]}
 */
#include <bits/stdc++.h>
using namespace std;

using vi = vector<int>;
using vvi = vector<vi>;

int N, Root;
vvi G;

vi D, U, V;

void dfs(int u, int p){
    U[u] = 1;
    V[u] = 0;
    for(auto v : G[u]){
        if(v == p) continue;
        dfs(v, u);
        U[u] += V[v];
        V[u] += D[v];
    }
    D[u] = max(U[u], V[u]);
}

int proc(){
    U.assign(N + 1, 0);
    V.assign(N + 1, 0);
    D.assign(N + 1, 0);

    dfs(Root, 0);
    return U[Root];
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> N >> Root;
    G.assign(N + 1, {});
    for(int a,b,i=1;i<N;++i){
        cin >> a >> b;
        G[a].push_back(b);
        G[b].push_back(a);
    }
    cout << proc() << endl;
    return 0;
}